package com.yupi.yupicturebackend.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 区块链存证实体
 *
 * @author yupi
 */
@TableName(value = "blockchain_proof")
@Data
public class BlockchainProof implements Serializable {

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 存证唯一标识
     */
    private String proofId;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 图片URL
     */
    private String imageUrl;

    /**
     * 图片哈希
     */
    private String imageHash;

    /**
     * 存证拥有者
     */
    private String owner;

    /**
     * 拥有者地址
     */
    private String ownerAddress;

    /**
     * 存证描述
     */
    private String description;

    /**
     * 区块链网络
     */
    private String network;

    /**
     * 交易哈希
     */
    private String transactionHash;

    /**
     * 区块号
     */
    private Long blockNumber;

    /**
     * 区块哈希
     */
    private String blockHash;

    /**
     * 存证时间戳
     */
    private Long proofTimestamp;

    /**
     * 存证数据 (JSON格式)
     */
    private String proofData;

    /**
     * 数字签名
     */
    private String digitalSignature;

    /**
     * 证书URL
     */
    private String certificateUrl;

    /**
     * 验证状态
     */
    private String verificationStatus;

    /**
     * 存证类型 (copyright, ownership, authenticity)
     */
    private String proofType;

    /**
     * 存证状态 (pending, confirmed, failed)
     */
    private String status;

    /**
     * 确认数
     */
    private Integer confirmations;

    /**
     * 存证成本
     */
    private String cost;

    /**
     * Gas费用
     */
    private String gasFee;

    /**
     * 错误信息
     */
    private String errorMessage;

    /**
     * 扩展信息 (JSON格式)
     */
    private String extendInfo;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 是否删除
     */
    @TableLogic
    private Integer isDelete;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
